package basic6;

import java.util.Scanner;

public class J06_Array {

	public static void main(String[] args) {

		// 배열 Array
		// 동일한 종류의 여러개의 값들을 저장할 수 있는 자료구조
		// 배열에 저장되는 내용을 요소(element)라 하고 각 요소는 위치값(index)을 이용해서 접근 할 수 있음
		// 위치값은 0부터 시작한다.

		// 배열 변수 선언

//		 int number; 단일 값을 저장하기 위한 변수
		 int numbers[]; // 정수형 배열 . 배열의 변수이름은 복수형으로 사용하는 것이 보기 간편하다
		 double taxes[]; // 실수형 배열
		 char names[]; // 문자형 배열
		//
		// 배열 생성
		 numbers = new int[10]; //10개의 정수를 저장할 수 있는 레퍼런스를 만든다.
		 taxes=new double[10]; //10개의 실수저장
		 names=new char[10];//10개의 문자저장
		//
		// System.out.println(numbers);
		// System.out.println(taxes);
		// System.out.println(names);
		//
		//
		// System.out.println(numbers[0]);
		// System.out.println(numbers[1]);
		// System.out.println(numbers[9]);
		//
		//
		// System.out.println(taxes[2]);
		// System.out.println(taxes[3]);
		// System.out.println(taxes[4]);
		//
		// System.out.println(names[5]);
		// System.out.println(names[6]);
		// System.out.println(names[7]);
		//
		// names[0] = '수';
		// names[1] = '지';
		// names[2] = '!';
		// System.out.println(names);
		// System.out.println(names[0]);
		// System.out.println(names[1]);
		// System.out.println(names[2]);
		// System.out.println(""+names);

//		 numbers에 1~10까지 값 저장
//		 numbers[0]=1;
//		 numbers[1]=2;
//		 numbers[2]=3;
//		 numbers[3]=4;
//		 numbers[4]=5;
//		 numbers[5]=6;
//		 numbers[6]=7;
//		 numbers[7]=8;
//		 numbers[8]=9;
//		 numbers[9]=10;
		
		// System.out.println(numbers[0]);
		// System.out.println(numbers[2]);
		// System.out.println(numbers[4]);
		// System.out.println(numbers[6]);
		// System.out.println(numbers[8]);
		//
		//
		// 반복문을 이용한 배열 처리

		//
//		 for(int i=0; i<10; ++i){
//		 numbers[i]=i+1;
//		 System.out.println(numbers[i]);
//		
//		 }
		
//		 for(int i=1; i<=10; ++i){
//		 numbers[i]=i+1;
//		
//		 }

		// 키보드로입력받은 정수 5개를 그대로 출력
		Scanner sc = new Scanner(System.in);
		System.out.print("정수 5개를 입력하세요. : "); // 대량의 데이터를 처리하기 위해 배열을 이용한다.
		/*
		 * int num1=sc.nextInt(); int num2=sc.nextInt(); int num3=sc.nextInt();
		 * int num4=sc.nextInt(); int num5=sc.nextInt();
		 */
		// 각 코드에 공통요소가 없기 때문에 반복문으로 변경 불가.

		int nums[] = new int[5];
		/*
		 * nums[0]=sc.nextInt(); nums[1]=sc.nextInt(); nums[2]=sc.nextInt();
		 * nums[3]=sc.nextInt(); nums[4]=sc.nextInt();
		 */

		// 각 코드에 공통요소가 있으므로 반복문으로 변경가능

		/*for (int n = 0; n <= 5; n++) {
			nums[n] = sc.nextInt(); // sc.nextInt는 문자를 작성하고 스페이드바를 눌렀을때 입력한 문자를
									// 하나의 문자로 인식.
									// 하지만 지정된 배열의 크기는 4바이트로 한정되어 있기
									// 때문에 4바이트가 넘어가면 저장하지 못한다. (ps.nextLine은 엔터를 쳤을때 입력된 줄이 하나열로 인식됨)
			System.out.print(nums[n]);
			
		}*/
		
		for(int i:nums){
			nums[i]=sc.nextInt();
			System.out.print(nums[i]);
		}
		
		//배열의 크기 알아내기
		System.out.println(nums.length);
		System.out.println(numbers.length);
		
		//배열사용시 볼수 있는 오류 
		double vals[]=new double[100];
		vals[0] = 100.0;
		//vals[100]=100.0;
		//ArrayIndexOutOfBoundsException: 위치값이 배열의 경계선을 넘었다. (위치값이 배열의 마지막 값보다 높다.)
		vals[0]=sc.nextDouble(); 
		//스캔받는 값이 실수가 아닌 문자였을 경우. InputMismatchException: 입력한 값이 타입과 매치되지 않는다.
		
	}

}
